package com.train.user.service;

import com.train.user.domain.SysPostComment;
import com.train.user.dto.CommentDTO;
import com.train.user.vo.SysPostCommentVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author HP
* @description 针对表【sys_post_comment(动态评论表)】的数据库操作Service
* @createDate 2025-10-24 16:01:41
*/
public interface SysPostCommentService extends IService<SysPostComment> {

    /**
     * 发布评论(主评论或回复评论)
     * 
     * @param userId 用户ID
     * @param commentDTO 评论信息
     * @return 是否成功
     */
    boolean addComment(Long userId, CommentDTO commentDTO);

    /**
     * 删除评论
     * 
     * @param userId 用户ID
     * @param commentId 评论ID
     * @return 是否成功
     */
    boolean deleteComment(Long userId, Long commentId);

    /**
     * 获取动态的评论列表(两级结构)
     * 
     * @param postId 动态ID
     * @return 评论列表
     */
    List<SysPostCommentVO> getCommentListByPostId(Long postId);

    /**
     * 获取评论详情
     * 
     * @param commentId 评论ID
     * @return 评论详情
     */
    SysPostCommentVO getCommentDetail(Long commentId);

    /**
     * 点赞评论
     * 
     * @param commentId 评论ID
     * @return 是否成功
     */
    boolean likeComment(Long commentId);

    /**
     * 取消点赞评论
     * 
     * @param commentId 评论ID
     * @return 是否成功
     */
    boolean unlikeComment(Long commentId);

    /**
     * 是否已点赞该评论
     *
     * @param userId 用户ID
     * @param commentId 评论ID
     * @return true 已点赞, false 未点赞
     */
    boolean isCommentLiked(Long userId, Long commentId);
}

